home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 25
/
AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso
/
Updates
/
AmigaOS3.5
/
IPop
/
cx.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-05-16
|
3KB
|
134 lines
#ifndef __COMMON_H__
#include "common.h"
#endif /* __COMMON_H__ */
extern struct PopData *pd;
struct Library *CxBase;
/*
* ho hum..the lowly life of a commodity
* maybe we should commit Cxcide
*/
VOID disposeCx(VOID)
{
if(pd->pd_cxBroker)
{
DeleteCxObjAll(pd->pd_cxBroker);
pd->pd_cxBroker = NULL;
}
if(CxBase)
{
CloseLibrary((struct Library*)CxBase);
}
}
/*
* Molson Ice...but uhm..beware the penguin
*/
BOOL createCx(struct MsgPort *port)
{
struct NewBroker nb;
CxObj *filter;
disposeCx();
if(!(CxBase = (struct Library*)OpenLibrary("commodities.library", 40)))
{
return(FALSE);
}
nb.nb_Version = NB_VERSION;
nb.nb_Name = "IPop";
nb.nb_Title = VERS;
nb.nb_Descr = "AppIcon POP Checker";
nb.nb_Unique = NBU_NOTIFY | NBU_UNIQUE;
nb.nb_Pri = pd->pd_cxPriority;
nb.nb_Port = port;
nb.nb_ReservedChannel = NULL;
nb.nb_Flags = COF_SHOW_HIDE;
if(pd->pd_cxBroker = CxBroker(&nb, NULL))
{
/* install a hotkey for popping up window */
filter = CxFilter(pd->pd_cxPopKey);
AttachCxObj(filter, CxSender(port, 86));
AttachCxObj(filter, CxTranslate(NULL));
AttachCxObj(pd->pd_cxBroker, filter);
if(CxObjError(pd->pd_cxBroker) == 0)
{
ActivateCxObj(pd->pd_cxBroker, 1);
return(TRUE);
}
DeleteCxObjAll(pd->pd_cxBroker);
}
return(FALSE);
}
/*
* handle the commodity
*/
BOOL processCxMsg(CxMsg *msg)
{
ULONG msgID;
ULONG msgType;
msgID = CxMsgID(msg);
msgType = CxMsgType(msg);
ReplyMsg((struct Message *)msg);
switch(msgType)
{
case CXM_IEVENT:
{
switch(msgID)
{
case 86:
{
openHWindow(pd);
break;
}
}
break;
}
case CXM_COMMAND:
{
switch(msgID)
{
case CXCMD_DISABLE: /* disable ourselves */
{
ActivateCxObj(pd->pd_cxBroker, 0);
break;
}
case CXCMD_ENABLE: /* enable ourselves */
{
ActivateCxObj(pd->pd_cxBroker, 1);
break;
}
case CXCMD_APPEAR:
case CXCMD_UNIQUE:
{
openHWindow(pd);
break;
}
case CXCMD_DISAPPEAR:
{
closeHWindow(pd);
break;
}
case CXCMD_KILL: /* mama tryme */
{
return(FALSE);
}
}
}
}
return(TRUE);
}